package com.dragon.logical.service.finance;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.repository.entity.Bill;
import com.dragon.repository.entity.CustomerPayment;
import com.dragon.repository.entity.PlanCollect;

import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Map;

/**
 * <p>
 * 账单表 服务类
 * </p>
 *
 * @author sy
 * @since 2023-12-12
 */
public interface IBillService extends IService<Bill> {

    /**
     * 分页列表
     * @param page
     * @param limit
     * @param customerId
     * @param isFinish
     * @param time
     * @return
     */
    Page<Bill> billList(Integer page, Integer limit, Integer customerId, Integer isFinish, String time);

    /**
     * 查询计划收款列表
     * @param page
     * @param limit
     * @param customerId
     * @param startTime
     * @param endTime
     * @return
     */
    Page<PlanCollect> planCollects(Integer page, Integer limit, Integer customerId, String startTime, String endTime);

    /**
     * 添加
     * @param bill
     */
    void addBill(Bill bill);

    /**
     * 判断时间是否 在这两个时间 之间
     * @param startTime
     * @param endTime
     * @param historyStartTime
     * @param historyEndTime
     * @return
     */
    boolean belongCalendar(Date startTime,Date endTime, Date historyStartTime, Date historyEndTime);

    /**
     * 更新
     * @param billId
     */
    void update(Integer billId);

    /**
     * 查详情
     * @param billId
     * @return
     */
    Bill detailOne(Integer billId);

    void updateBillCustomer(CustomerPayment customerPayment);

    void export(Integer id, HttpServletResponse response) throws UnsupportedEncodingException;

    /**
     * 账单统计
     * @return
     * @param customerId
     */
    Map<String, Object> billStatistics(Integer customerId);
}
